package org.addsome.leetcode;

/**
 * 50. Pow(x, n)
 * 实现 pow(x, n) ，即计算 x 的 n 次幂函数。
 *
 * @author 14813
 * @date 2020/5/11
 **/
public class MyPow {

    private static double myPow(double x, int n) {
        double y = 1;
        if (x == 0) {
            return 0;
        }
        if (x == 1) {
            return 1;
        }
        if (n == 0) {
            return 1;
        }
        if (n > 0) {
            for (int i = 0; i < n; i++) {
                y = y * x;
            }
            return y;
        }
        for (int i = 0; i > n; i--) {
            y = y * x;
        }
        return 1 / y;
    }

    private static double myPow2(double x, int n) {
        if (x == 0) {
            return 0;
        }
        if (n == 0) {
            return 1;
        }
        if (n < 0) {
            if(n == -2147483648){
                return x*myPow(x,n+1);
            }
            x = 1 / x;
            n = -n;
        }
        if (n % 2 != 0) {
            return x * myPow2(x, n - 1);
        } else {
            return myPow2(x * x, n / 2);
        }
    }

    public static void main(String[] args) {
        double result = myPow(2.0, -2147483648);
        System.out.println(result);
    }
}
